import axios from "axios";
// 创建axios实例

let baseURL  = process.env.VUE_APP_URL;

var instance = axios.create({ 
    baseURL,
    timeout: 1000 * 12
 }); //默认请求时长 超过就超时


// 请求 拦截器
instance.interceptors.request.use(
    config => {
        // 请求拦截器 一般用于验证token 判断登录凭证是否过期  
        // const token = store.state.token;
        // token && (config.headers.Authorization = token);
        // 
        return config;
    },
  
)
// 响应拦截器  
instance.interceptors.response.use(
    // 请求成功
    res => {
        return res.data //因为axios会包裹一层data 所以直接res.data才是接口返回的数据
    },
    // 请求失败
    error => {
        const { response } = error;
        if (response) {
            // 请求已发出，但是不在2xx的范围
            errorHandle(response.status, response.data.message);
            return Promise.reject(response);
        } else {
            // 处理断网的情况
            // eg:请求超时或断网时，更新state的network状态
            // network状态在app.vue中控制着一个全局的断网提示组件的显示隐藏
            // 关于断网组件中的刷新重新获取数据，会在断网组件中说明
            store.commit('changeNetwork', false);
        }
    });

export default instance